//
//  YNTwoPeopleChat.h
//  Messenger
//
//  Created by iOS on 15/3/4.
//  Copyright (c) 2015年 孙浪. All rights reserved.
//
//  两人会话消息实体
//

#import <UIKit/UIKit.h>
#import "YNIMFrameworkTypedef.h"

@interface YNTwoPeopleChat : NSObject

//信息包id(主键)
@property (nonatomic, strong) NSString *packId;

//聊天对方帐号
@property (nonatomic, strong) NSString *chatUserNo;

//文件ID(映射FileAttr表中的主键)
@property (nonatomic, strong) NSString *fileId;

//消息类型(0:普通消息 1:图片 2：文件 3：图片文本混合消息)
@property (nonatomic) int messageType;

//是否是发送(0：是  1 不是)
@property (nonatomic) int isSendMsg;

//消息内容
@property (nonatomic, strong) NSString *message;

@property (nonatomic, strong) NSString *content;

//接收时间
@property (nonatomic, strong) NSString *mTime;


/**
 *  jc添加-用于消息漫游判断
 *  判断最近20条信息的key值是否相同
 *  相同：表示最近20条信息是连续的，不需要拉取消息漫游信息
 *  不同：表示最近20条信息是不连续的，需要拉取消息漫游信息
 */
@property(nonatomic,strong)NSString * messageContinuousKey;


/**
 *  jc添加-用于消息漫游判断
 *  YES: 判断最近20条信息是否都是YES
 *  YES：表示最近20条信息已经拉取过消息漫游了，不需要再次拉取消息漫游信息
 *  NO： 表示最近20条信息没有拉取过消息漫游，需要再次拉取消息漫游信息
 */
@property(nonatomic,assign)BOOL isMessageContinuous;

/**
 * JC添加-用于测回消息判断
 *  YES：撤回,NO:正常消息
 */
@property(nonatomic,assign)BOOL isMessageWithdraw;


//是否已读(0是未读,1是已读)
@property (nonatomic) int isReaded;

//是否发送成功(0:失败 1成功 默认0 2发送中)
@property (nonatomic) int isSuccess;

//是谁发的(本人还是好友)
@property (nonatomic) int masterType;

//具体消息内容
@property (nonatomic, strong)NSString *messageBody;

//消息的高度(纯消息高度, 不是整个Cell的高度, 也不是背景图片的高度)
@property (nonatomic,assign) CGFloat messageHeight;
//发送消息者的名字
@property (nonatomic, strong) NSString *senderName;

//语音ID
@property (nonatomic, strong) NSString * voiceId;
@property (nonatomic, copy) NSString *voicePath;//声音路径
@property (nonatomic, copy) NSString *voiceUrl;
@property (nonatomic, copy) NSString *voiceDuration;//声音时间



//创建两人会话表
+ (BOOL)creatTwoPeopleChatTableInDatabase:(FMDatabase *)db;

//插入两人会话信息
- (BOOL)insertTwoPeopleChatTableInDatabase:(FMDatabase *)db;

//清空所有两人会话信息
+ (BOOL)deleteAllChatInDatabase:(FMDatabase *)db;

//清除指定和某个人的会话信息
+ (BOOL)deleteTwoPeopleChatWithUserNo:(NSString *)userNo inDatabase:(FMDatabase *)db;

//根据聊天对方帐号加载之上的20条记录
+ (NSArray *)queryTwoPeopleChatWithUserNo:(NSString *)userNo startIndex:(NSInteger)start endIndex:(NSInteger)end isSelectSendSuccessMessage:(BOOL)selectSuccess inDatabase:(FMDatabase *)db;

/**
 查询会话人的消息记录里时间最早的时间
 黄旭 2017-12-5
 @param userNo 用户id
 @param db 数据库对象
 @return 时间字符串
 */
+ (NSString*)queryMinTimeByTwoPeopleChatWithUserNo:(NSString*)userNo inDatabase:(FMDatabase *)db;

/**
 根据userNo查询当前数据
 
 @param userNo
 @param db
 @return
 */
+ (NSArray*)queryTwoPeopleChatWithUserNo:(NSString*)userNo inDatabase:(FMDatabase *)db;

//根据关键字搜索聊天记录(查找聊天记录)
+ (NSArray *)queryTwoPeopleChatByKeywords:(NSString *)keyWords byUserNo:(NSString *)userNo inDatabase:(FMDatabase *)db;


/**
 查询对应未读消息的第一条消息
 
 @param userNo 聊天信息id
 @param unReadCount 未读条数
 @param db db
 @return 返回数据
 */
+(NSArray *)queryUnReadFirstTwoPeopleChatMessageWithUserNo:(NSString *)userNo unReadCount:(NSInteger)unReadCount inDatabase:(FMDatabase *)db;


/**
 用于消息漫游判断
 查询最近多少条信息
 
 @param UserNo 聊天对方账号
 @param sendTime 这个时间之前的多少条数据，nil：最近多少条数据
 @param numberCount 查询多少条数据
 @param db db
 @return 返回结果
 */
+(NSArray *)queryTwoPeopleChatTopInfoWithUserNo:(NSString *)UserNo mTime:(NSString *)mTime numberCount:(NSInteger)numberCount Database:(FMDatabase *)db;

/**
 *  修改撤回状态  2018.11.27jc添加
 *
 *  @param packId id
 *  @param db     db
 *
 *  @return 返回状态
 */
+(BOOL)updateTwoPeopleChatWithdrawWithPackId:(NSString *)packId inDatabase:(FMDatabase *)db;

//--------------------------------------//-----------------------------------//------------------------------//-------------------------------//

//更新会话
+ (BOOL)updateTwoPeopleChatTableWithMessageID:(NSString *)messageID sendTime:(NSString *)sendTime isSuccess:(int)messageState inDatabase:(FMDatabase *)db;

/**
 *  更新语音状态  2016.8.1jc添加
 *
 *  @param messageID messageID
 *  @param db        db
 *
 *  @return 返回状态
 */
+(BOOL)updateTwoPeopleChatVoiceStateWithMessageID:(NSString *)messageID inDatabase:(FMDatabase *)db;

//更新高度
+ (BOOL)updateTwoPeopleChatTableWithMessageID:(NSString *)messageID messageHeight:(CGFloat)messageHeight inDatabase:(FMDatabase *)db;

//只更新状态
+ (BOOL)updateMessageSendingStateWithDatabase:(FMDatabase *)db;

//根据消息的ID清除数据库里面对应的消息
+ (BOOL)deleteAMessageFromDatabaseWithMessageID:(NSString *)messageID inDatabase:(FMDatabase *)db;

#pragma mark asset Url 图片

//文件名
@property (nonatomic, strong) NSString *fileName;

//原图路径
@property (nonatomic, strong) NSString *originPhotoUrl;

//文件路径
@property (nonatomic, strong) NSString *fileUrl;


//语音状态
@property (nonatomic, assign) NSInteger voiceState;


//语音名
@property (nonatomic, strong) NSString * voiceName;






//更新消息的图片名字, 原图路径, 消息高度
+ (BOOL)updateMessageWithMessageID:(NSString *)messageID
                    originPhotoUrl:(NSString *)originUrl
                          fileName:(NSString *)fileName
                     messageHeight:(CGFloat)messageHeight
                        inDatabase:(FMDatabase *)db;


#pragma mark - 文件

//文件状态
@property (nonatomic, assign) NSInteger fileState;

//更改文件状态
+ (BOOL)updateMessageFileStateWithMessageID:(NSString *)messageID fileState:(NSInteger)fileState inDataBase:(FMDatabase *)db;

@end
